/**
 * Created by apple on 2017/6/9.
 */

var express = require('express');
var router = express.Router();

var AgentRouter = module.exports;
var AdminToken = require('../db/user_tokens.js');
var Agent = require('../dao/agent.js');


/**
 * 系统管理员、产品管理员添加产品代理
 * @param  token 管理员
 *         url/agent/addAgent
 */
AgentRouter.addAgent = function(req, res) {
    var par = paramAll(req);

    router.checkParAndAdm(par,false,function (err,errCode,agentInfo) {

        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        Agent.addAgent(agentInfo,function (err) {
            if(err){
                console.log(err);
                res.json(new ERR(err, 400));
                return;
            }

            res.json(new PKG(agentInfo));

        });
    });

}
router.post('/addAgent', AgentRouter.addAgent);



/**
 * 系统管理员、产品管理员修改代理
 * @param  token 管理员
 *         url/agent/updateAgent
 */
AgentRouter.updateAgent = function(req, res) {
    var par = paramAll(req);

    router.checkParAndAdm(par,true,function (err,errCode,agentInfo) {

        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        Agent.updateAgent(agentInfo,function (err,result) {
            if(err){
                console.log(err);
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));

        });
    });

}
router.post('/updateAgent', AgentRouter.updateAgent);



/**
 * 系统管理员、产品管理员查询代理列表
 * @param  token 管理员
 *         url/agent/agentList
 */
AgentRouter.agentList = function(req, res) {
    var par = paramAll(req);

    if(!par.token){
        res.json(new ERR('token不为空', 400));
        return;
    }

    if(!par.app_sid){
        res.json(new ERR('app_sid不为空', 400));
        return;
    }

    if(par.status){
        if(par.status != 1 && par.status != 0){
            res.json(new ERR('status有误', 400));
            return;
        }
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        Agent.agentList(par,function (err,result) {
            if(err){
                res.json(new ERR(err, 400));
                return;
            }
            var list = {
                agentList: result
            };
            res.json(new PKG(list));
        });

    });

}
router.post('/agentList', AgentRouter.agentList);



/**
 * 抽取  添加、修改代理校验请求的参数以及管理员权限
 * par 请求的参数
 * isUpdate  ture 更新数据      false 修改数据
 * cb 返回
 */
router.checkParAndAdm = function (par,isUpdate,cb) {


    if(!par.token){
        cb('token不为空',400);
        return;
    }

    if(!par.app_sid){
        cb('app_sid不为空',400);
        return;
    }

    if(!par.lvl){
        cb('lvl不为空',400);
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode, adminInfo) {
        if (err) {
            cb(err,400);
            return;
        }

        var agentInfo = {
            app_sid: par.app_sid,
            lvl: par.lvl
        };
        var parCount = 0;


        if (par.name) {
            agentInfo.name = par.name;
            parCount++;
        }
        if (par.score) {
            if(isNaN(par.score)){
                cb('score参数有误',400);
                return;
            }
            agentInfo.score = par.score;
            parCount++;
        }
        if (par.status) {
            if(par.status != 1 && par.status != 0){
                cb('status参数有误',400);
                return;
            }
            agentInfo.status = par.status;
            parCount++;
        }
        if (par.commission_rate1) {
            if(isNaN(par.commission_rate1)){
                cb('commission_rate1参数有误',400);
                return;
            }
            agentInfo.commission_rate1 = par.commission_rate1;
            parCount++;
        }
        if (par.commission_rate2) {
            if(isNaN(par.commission_rate2)){
                cb('commission_rate2参数有误',400);
                return;
            }
            agentInfo.commission_rate2 = par.commission_rate2;
            parCount++;
        }
        if (par.commission_rate3) {
            if(isNaN(par.commission_rate3)){
                cb('commission_rate3参数有误',400);
                return;
            }
            agentInfo.commission_rate3 = par.commission_rate3;
            parCount++;
        }


        //如果是修改，一定要带上修改的字段
        if (isUpdate == true && parCount == 0) {
            cb('无效参数', 400);
            return;
        }

        if(isUpdate == true){
            agentInfo.account = adminInfo.account;
            agentInfo.adm_uid = adminInfo.uid;
        }

        cb(null,0,agentInfo);

    });

}


/**
 * 查询代理信息
 *         url/agent/getAgent
 */
AgentRouter.getAgent = function(req, res) {
    var par = paramAll(req);

    if(!checkSrvConnection(par)) return res.json(new ERR('访问受限',400));

    par.app_sid = par.appSid;

    if(par.status){
        if(par.status != 1 && par.status != 0){
            res.json(new ERR('status有误', 400));
            return;
        }
    }

    Agent.agentList(par,function (err,result) {
        if(err){
            res.json(new ERR(err, 400));
            return;
        }
        res.json(new PKG(result));
    });

}
router.post('/getAgent', AgentRouter.getAgent);


module.exports = router;